package kingpengcom.demoopengl.demoopengl.triangle;

import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;

/**
 * @author kingpengLin
 * @e-mail linjinpeng@vsoontech.com
 * @since 2018/10/18.
 */
public class Triangle {
    private FloatBuffer vertexBuffer;

    // 数组中，每一个定点的坐标数
    static final int COORDS_PER_VERTEX = 3;
    // 三角形顶点坐标数组
    static float triangleCoords[] = {
        // 定点为逆时针方向
        0.0f, 0.622008459f, 0.0f,// top
        -0.5f, -0.311004243f, 0.0f,// bottom left
        0.5f, -0.311004243f, 0.0f // bottom right
    };
    // 使用红色，绿色，蓝色和alpha（不透明度）值设置颜色
    float color[] = {0.63671875f, 0.76953125f, 0.22265625f, 1.0f};

    public Triangle() {
        //初始化顶点坐标字节缓冲区
        //（坐标值的数量*每个浮点数4个字节）
        ByteBuffer bb = ByteBuffer.allocateDirect(triangleCoords.length * 4);
        // 使用设备硬件的本机字节顺序
        bb.order(ByteOrder.nativeOrder());

        // 从ByteBuffer创建一个浮点缓冲区
        vertexBuffer = bb.asFloatBuffer();
        // 将坐标添加到FloatBuffer
        vertexBuffer.put(triangleCoords);
        // 设置缓冲区以读取第一个坐标
        vertexBuffer.position(0);
    }
}
